package cn.edu.xhu.library_management.department.mapper;

import cn.edu.xhu.library_management.department.entity.LmMajor;
import cn.edu.xhu.library_management.department.entity.search.SearchMajor;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author: MMJ
 * @Date: 2022-01-29
 * @Description: 专业相关操作Mapper
 */
public interface MajorMapper {
    /**
     * 添加专业
     * @param major 专业实体对象
     * @return 返回值大于0即添加成功
     */
    public int addMajor(LmMajor major);

    /**
     * 修改专业(通过ID修改)
     * @param major 专业实体对象
     * @return 返回值大于0即修改成功
     */
    public int updateMajor(LmMajor major);

    /**
     * 通过专业ID删除专业
     * @param maId 专业ID
     * @return 返回值大于0即删除成功
     */
    public int deleteMajorById(Integer maId);

    public int deleteMajorByIds(@Param("maIds") List<Integer> maIds);

    /**
     * 查找所有的专业对象
     * @return 专业对象集合
     */
    public List<LmMajor> findAllMajor();

    /**
     * 通过院系ID查找对应的专业
     * @param faId 院系ID
     * @return 专业对象集合
     */
    public List<LmMajor> findMajorsByDepartment(Integer faId);

    /**
     * 通过专业ID查找专业
     * @param maId 专业id
     * @return 专业对象
     */
    public LmMajor findMajorById(Integer maId);

    /**
     * 通过专业名称，查找专业
     * @param name 专业名称
     * @return 专业对象
     */
    public LmMajor findMajorByName(@Param("name") String name);

    /**
     * 搜索专业带分页
     * @param searchMajor 专业搜索对象
     * @return
     */
    public List<LmMajor> search(SearchMajor searchMajor);


    /**
     * 搜索的总条目
     * @param searchMajor 搜索对象
     * @return 总条目数
     */
    public Integer searchTotal(SearchMajor searchMajor);
}
